#!/bin/bash
cd ebpf
# 从当前运行的内核中提取BTF信息，生成vmlinux.h
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
# clang -target bpf -D__TARGET_ARCH_x86_64 -O2 -g -c syscall_monitor.bpf.c -o syscall_monitor.bpf.o
clang -target bpf -O2 -g -c syscall_monitor.bpf.c -o syscall_monitor.bpf.o
# 编译使用 perf event 实时输出模式的 eBPF 程序
# clang -target bpf -D__TARGET_ARCH_x86_64 -DOUTPUT_MODE_PERF_EVENT -O2 -g -c ebpf/syscall_monitor.bpf.c -o ebpf/syscall_monitor_perf.bpf.o

# 编译使用映射轮询输出模式的 eBPF 程序
# clang -target bpf -D__TARGET_ARCH_x86_64 -DOUTPUT_MODE_MAP_POLL -O2 -g -c ebpf/syscall_monitor.bpf.c -o ebpf/syscall_monitor_poll.bpf.o

bpftool gen skeleton syscall_monitor.bpf.o > syscall_monitor.skel.h
cd ..

gcc -o syscall_monitor ebpf/syscall_monitor.c -lbpf -lelf -lz
# mkdir -p build

# cd build
# cmake ..
# make